<?php
/*
Author: Nicolas Zdanovicz
Date 20140325
Administration User Data Access Class
*/
class DAOUsuarioAdm{

    /*
    Obtiene un usuario a partir del Id.
    Parametros
        id: id del usuario buscado.
    Devuelve
        UsuarioAdm si existe
    Arroja 
        ENoDataFound si no existe        
    */
    public static function getById($id){
         
         $db = getPDO();
         $sql = "select * from usuario_interno where id = ?";
         $stmt = $db->prepare($sql);
         $ok = $stmt->execute(array($id));
         $obj = $stmt->fetchObject();
         
         $usr = null;
         if($obj!=null){
             $usr= DAOUsuarioAdm::mapValues($obj);
         }
         else{
            throw new ENoDataFound("No se encontro el usuario con el id ".$id);
         }
         
         return $usr;
     }
    
    
    /*
    Obtiene un usuario a partir del nombre de usuario
    Parametros
        usuario: nombre del usuario buscado
    Devuelve
        UsuarioAdm si existe
    Arroja
        ENoDataFound si no existe
    */
     public static function getByUsuario($usuario){
    
        $db = getPDO();
         $sql = "select * from usuario_interno where usuario = ?";
         $stmt = $db->prepare($sql);
         $ok = $stmt->execute(array($usuario));
         $obj = $stmt->fetchObject();
         
         $usr = null;
         if($obj!=null){
            $usr= DAOUsuarioAdm::mapValues($obj);
         }
         else{
            throw new ENoDataFound("No se encontro el usuario ".$usuario);
         }
         
         return $usr;
     }
    
    
    
     /*
     Obtiene un usuario a partir de su cuenta de correo
     Parametros
        $email cuenta de correo
     Devuelve
        UsuarioAdm si existe
     Arroja
        ENoDataFound si no existe
     */ 
     public static function getByEmail($email){
         
         $db = getPDO();
         $sql = "select * from usuario_interno where email = ?";
         $stmt = $db->prepare($sql);
         $ok = $stmt->execute(array($email));
         $obj = $stmt->fetchObject();
         
         $usr = null;
         if($obj!=null){
             $usr= DAOUsuarioAdm::mapValues($obj);
         }
         else{
            throw new ENoDataFound("No se encontro el usuario ".$usuario);
         }
         
         return $usr;
         
         
     }
    
    
    /*
    Mapea un usuario a partir de una tupla
    Parametros
        $obj tupla
    Devuelve
        UsuarioAdm
    */
    private static function mapValues($obj){
             $usr = new UsuarioAdm();
             $usr->setId($obj->id);
             $usr->setUsuario($obj->usuario);
             $usr->setNombre($obj->nombre);
             $usr->setEmail($obj->email);
             $usr->setPassword($obj->password);
			 return $usr;
    } 

}
?>